package cn.xeblog.plugin.handler;

import cn.xeblog.commons.entity.Response;
import cn.xeblog.commons.enums.MessageType;
import cn.xeblog.plugin.factory.MessageHandlerFactory;
import lombok.AllArgsConstructor;

/**
 * 消息响应处理器
 *
 * @author anlingyi
 * @date 2020/8/19
 */
@AllArgsConstructor
public class ResponseHandler {

    /**
     * 响应消息
     */
    private Response response;

    /**
     * 执行
     */
    public void exec() {
        // 心跳，跳过
        if (response.getType() == MessageType.HEARTBEAT) {
            return;
        }
        // 处理过程
        process();
    }

    /**
     * 处理过程，即根据不同类型到不同类型实例中处理
     */
    private void process() {
        MessageHandlerFactory.INSTANCE.produce(response.getType()).handle(response);
    }

}
